// src/utils/time.ts
import { computed } from 'vue'

/**
 * 生成当天可用的时间段
 * @param options 配置选项
 * @param options.startHour 服务开始时间（小时）
 * @param options.endHour 服务结束时间（小时）
 * @param options.minHoursAfterNow 当前时间后几小时开始可预约
 * @returns 返回计算属性，包含可用时间段数组
 */
export function useTimeSlots(options = { startHour: 8, endHour: 21, minHoursAfterNow: 1 }) {
  return computed(() => {
    const { startHour, endHour, minHoursAfterNow } = options
    const slots = []
    const now = new Date()
    const currentHour = now.getHours()

    // 计算可选的开始时间（当前时间+minHoursAfterNow小时，且不小于startHour）
    const firstAvailableHour = Math.max(startHour, currentHour + minHoursAfterNow)

    // 生成时间段
    for (let hour = firstAvailableHour; hour <= endHour; hour++) {
      const startTime = `${hour}:00`
      const endTime = `${hour + 1}:00`
      slots.push({
        label: `${startTime}-${endTime}`,
        value: `${startTime}-${endTime}`
      })
    }

    return slots
  })
}

/**
 * 格式化时间显示
 * @param timeSlot 时间段字符串，如 "9:00-10:00"
 * @returns 格式化后的显示文本
 */
export function formatTimeSlot(timeSlot: string) {
  if (!timeSlot) return '请选择上门时间段'
  return timeSlot
}